#include "widget.h"
#include "ui_widget.h"

#include <QLineEdit>
#include <QPushButton>
#include <QDebug>
#include <QValidator>
#include <QLabel>
#include <QTextEdit>
#include <QComboBox>
#include <QSpinBox>
#include <QDateTimeEdit>
#include <QDial>
#include <QSlider>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QSlider* slider=new QSlider(this);
    slider->move(100,100);

    // QDial* dial=new QDial(this);
    // dial->setFixedSize(50,50);
    // dial->move(100,100);

    // QDateTimeEdit* edit=new  QDateTimeEdit(this);
    // edit->setFixedSize(300,50);
    // edit->move(100,100);

    // QSpinBox* box=new QSpinBox(this);
    // box->setFixedSize(100,50);
    // box->move(100,100);

    /*
    QComboBox* box=new QComboBox(this);
    box->addItem("选项1");
    box->addItem("选项2");
    box->addItem("选项3");
    box->move(100,100);

    // 当用户选择发生改变触发信号
    connect(box,&QComboBox::currentIndexChanged,this,[=](){
        qDebug()<<"用户的选择是："<<box->currentIndex();
    });
    */

    /*
    QLineEdit* lname=new QLineEdit(this);
    lname->setPlaceholderText("请输入文字"); // 设置默认文字
    lname->move(100,200);

    QLineEdit* lpassword=new QLineEdit(this);
    lpassword->setPlaceholderText("请输入密码");
    lpassword->setEchoMode(QLineEdit::Password); // 设置文字回显的样式
    lpassword->move(100,250);

    QLineEdit* lphone=new QLineEdit(this);
    lphone->setPlaceholderText("请输入电话");
    lphone->setInputMask("000-000-0000"); // 设置电话输入格式
    lphone->move(100,300);

    QPushButton* btn=new QPushButton(this);
    btn->setText("确定");
    btn->move(120,350);

    // 给 lineEdit 注册⼀个 validator
    //lphone->setValidator(new QRegExpValidator(QRegExp("^1\\d{10}$")));

    connect(btn,&QPushButton::clicked,this,[=](){
        qDebug()<<"用户姓名："<<lname->text();
        qDebug()<<"用户密码："<<lpassword->text();
        qDebug()<<"用户电话："<<lphone->text();
    });
   */

    /*
    QLineEdit* lpassword1=new QLineEdit(this);
    lpassword1->setPlaceholderText("请输入密码");
    lpassword1->setEchoMode(QLineEdit::Password); // 设置文字回显的样式
    lpassword1->move(100,200);

    QLineEdit* lpassword2=new QLineEdit(this);
    lpassword2->setPlaceholderText("请输入密码");
    lpassword2->setEchoMode(QLineEdit::Password); // 设置文字回显的样式
    lpassword2->move(100,250);

    QPushButton* btn=new QPushButton(this);
    btn->setText("确定");
    btn->move(120,300);

    QLabel* label=new QLabel(this);
    label->setFixedSize(120,120);
    label->move(100,100);

    connect(btn,&QPushButton::clicked,this,[=](){
        const QString& s1 = lpassword1->text();
        const QString& s2 = lpassword2->text();
        if (s1.isEmpty() && s2.isEmpty())
        {
            label->setText("密码为空!");
        }
        else if (s1 == s2)
        {
            label->setText("两次输入的密码相同!");
        }
        else
        {
            label->setText("两次输入的密码不同!");
        }
    });
    */

    /*
    QLabel* label=new QLabel(this);
    label->setFixedSize(300,50);
    label->setText("TextLabel");
    label->move(100,100);

    QTextEdit* text=new QTextEdit(this);
    text->setFixedSize(300,300);
    text->move(100,150);

    connect(text,&QTextEdit::textChanged,this,[=](){
        const QString& content=text->toPlainText(); // 获取多行输入框中的文字
        qDebug()<<"[textChanged] " <<content;
        label->setText(content); // 将文字设置到label中
    });

    connect(text,&QTextEdit::selectionChanged,this,[=](){
        const QTextCursor& cursor = text->textCursor(); // 选中改变时触发
        qDebug()<<"[selectionChanged] " <<cursor.selectedText(); // 打印鼠标选择的文本信息
    });

    connect(text,&QTextEdit::cursorPositionChanged,this,[=](){
        const QTextCursor& cursor=text->textCursor(); // 光标移动时触发
        qDebug()<<"[cursorPositionChanged] " << cursor.position(); // 打印光标的位置
    });

    connect(text,&QTextEdit::undoAvailable,this,[=](bool b){
        qDebug() << "[undoAvailable] " << b; // 按下ctrl+z触发
    });

    connect(text,&QTextEdit::redoAvailable,this,[=](bool b){
        qDebug() << "[redoAvailable] " << b; // 按下ctrl+y触发
    });

    connect(text,&QTextEdit::copyAvailable,this,[=](bool b){
        qDebug() << "[copyAvailable] " << b; // 选中文本触发
    });
    */
}

Widget::~Widget()
{
    delete ui;
}
